home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / pc_board / pbank20a.zip / BANK.PPS < prev    next >
Text File  |  1993-05-28  |  8KB  |  195 lines

  1. ;*****************************************************************************
  2. ;*                                                                           *
  3. ;*                           THE TIME BANK V2.0                              *
  4. ;*                                                                           *
  5. ;*                                                                           *
  6. ;*                          Written by: Eyal Levi                            *
  7. ;*                                                                           *
  8. ;*                            started: 05-10-93                              *
  9. ;*                                                                           *
  10. ;*                                                                           *
  11. ;*  Modification History:                                                    *
  12. ;*                                                                           *
  13. ;*  05/26/93 - RWM - Noticed users with 15 minutes left were being prompted  *
  14. ;*                   to deposit 90 minutes into bank.  If they did so they   *
  15. ;*   Version         stored 90 minutes and then were logged off for exceding *
  16. ;*       2.0a        time limits.  Added code to determine available time    *
  17. ;*                   left to user and only allow them to deposit time left   *
  18. ;*                   minus 2 minutes.  System will prompt with correct value.*
  19. ;*                   Also, write to log if user tries to get tricky <grin>.  *
  20. ;*                                                                           *
  21. ;*****************************************************************************
  22.  
  23. INTEGER  MAX_TIME_BALANCE,MAX_WITHDRAW,TIME_BALANCE,TIME_AVAILABLE
  24. INTEGER  A_DEPOSIT,A_WITHDRAW,MAX
  25. STRING   BANK_COMMAND, COUNT, USERTOKEN(3),ERR,ERR2
  26.  
  27. :BEGIN_MAIN
  28. Bank_Command=""
  29.   GETUSER
  30.   IF (LEFT(U_NOTES(4),4)<>"BANK") THEN
  31.      usertoken(1) = "BANK"
  32.      usertoken(2) = "TIME"
  33.      usertoken(3) = 0
  34.   ELSE
  35.      Tokenize U_NOTES(4)
  36.      Count = 1
  37.      gettoken usertoken(count)
  38.      WHILE (usertoken(count) != "") DO
  39.        count = count + 1
  40.        GETTOKEN usertoken(count)
  41.      ENDWHILE
  42.   ENDIF
  43.  
  44. ;IF (U_SEC<255) THEN
  45.                MAX_TIME_BALANCE = 30
  46.                MAX_WITHDRAW     = 15
  47.  
  48. ;ELSEIF (U_SEC=255) THEN
  49. ;           MAX_TIME_BALANCE = 300
  50. ;           MAX_WITHDRAW     = 150
  51. ;       ENDIF
  52.  
  53.  
  54. TIME_BALANCE     = usertoken(3)
  55.  
  56.  
  57. IF (TIME_BALANCE > MAX_WITHDRAW) THEN TIME_AVAILABLE = MAX_WITHDRAW
  58.    ELSE TIME_AVAILABLE = TIME_BALANCE
  59.   ENDIF
  60.  
  61. PRINTLN "@CLS@@X07"
  62. PRINTLN "@X07"
  63. PRINTLN "@X07"
  64. PRINTLN "@X07  @X77                     @X70┌─────────────────────────@X7F┐                         @X07"
  65. PRINTLN "@X0F @X08█@X78                     @X70│   @X7AJerusalem Time Bank   @X7F│                         @X07"
  66. PRINTLN "@X0F @X08█@X78                     @X70└@X7F─────────────────────────┘                         @X07"
  67. PRINTLN "@X0F @X08█@X78     @X70┌─────────────────────@X7F┐   @X70┌─────────────────────────────────────@X7F┐   @X07"
  68. PRINTLN "@X0F @X08█@X78     @X70│  @X7BD@X78)@X71eposit time      @X7F│   @X70│ @X7BIn your Account@X78: @X7E    @X78               @X7F│   @X07"
  69. PRINTLN "@X0F @X08█@X78     @X70│  @X7BW@X78)@X71ithdraw time     @X7F│   @X70│ @X79Maximum Bank Balance@X78: @X7E    @X78          @X7F│   @X07"
  70. PRINTLN "@X0F @X08█@X78     @X70│  @X7BH@X78)@X71elp!             @X7F│   @X70│                                     @X7F│   @X07"
  71. PRINTLN "@X0F @X08█@X78     @X70│                     @X7F│   @X70│ @X7BAvailable for Withdrawal@X78: @X7E    @X78      @X7F│   @X07"
  72. PRINTLN "@X0F @X08█@X78     @X70│  @X7BQ@X78)@X74uit to @X79J@X74B@X7AB@X78S      @X7F│   @X70│ @X79Maximum Withdrawal P/Day@X78: @X7E    @X78      @X7F│   @X07"
  73. PRINTLN "@X0F @X08█@X78     @X70└@X7F─────────────────────┘   @X70└@X7F─────────────────────────────────────┘   @X07"
  74. PRINTLN "@X0F @X08█@X78                                                                         @X07"
  75. PRINTLN "@X08 █@X78                                                                         @X07"
  76. PRINTLN "@X08 █@X78                                                                         @X07"
  77. PRINTLN "@X08 ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀@X07"
  78.  
  79.  
  80. ANSIPOS 53,8
  81. PRINT "@X75"
  82. PRINT TIME_BALANCE
  83. PRINTLN " @X78Min@X07"
  84.  
  85.  
  86. ANSIPOS 58,9
  87. PRINT "@X75"
  88. PRINT MAX_TIME_BALANCE
  89. PRINTLN " @X78Min@X07"
  90.  
  91.  
  92. ANSIPOS 62,11
  93. PRINT "@X75"
  94. PRINT TIME_AVAILABLE
  95. PRINTLN " @X78Min@X07"
  96.  
  97.  
  98. ANSIPOS 62,12
  99. PRINT "@X75"
  100. PRINT MAX_WITHDRAW
  101. PRINTLN " @X78Min@X07"
  102.  
  103. ANSIPOS 0,19
  104.   INPUTSTR "(@X0C@TIMELEFT@ @X0Emin. left) Jerusalem BBS Time Bank ", Bank_Command, 0Eh, 1, MASK_ALNUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE + ERASELINE
  105.  
  106.      IF (Bank_Command = "D") GOSUB DEPOSIT
  107.      IF (Bank_Command = "W") GOSUB WITHDRAW
  108.      IF (Bank_Command = "H") GOSUB HELP
  109.      IF (Bank_Command = "Q") GOTO END_PROGRAM
  110.      IF (Bank_Command = "") GOTO END_PROGRAM
  111.      GOTO BEGIN_MAIN
  112.  
  113.  
  114. :DEPOSIT
  115.  
  116. IF (TIME_BALANCE = MAX_TIME_BALANCE) THEN GOTO ERR_MAX
  117.  ENDIF
  118. A_DEPOSIT= ( MAX_TIME_BALANCE - TIME_BALANCE )
  119. IF (A_DEPOSIT > (MINLEFT())) THEN A_DEPOSIT=MINLEFT()-2
  120.   ENDIF
  121. INPUTSTR "Enter the Amount to Deposit :", A_DEPOSIT, 0Eh, 2, MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE + ERASELINE
  122. IF (A_DEPOSIT > ( MAX_TIME_BALANCE - TIME_BALANCE )) THEN GOTO ERR_TOO_MUCH
  123.   ENDIF
  124. IF (A_DEPOSIT > (MINLEFT())) THEN GOTO ERR_NOT_ENOUGH
  125.   ENDIF
  126. usertoken(3) = usertoken(3) + A_DEPOSIT
  127. U_NOTES(4) = usertoken(1)+" "+usertoken(2)+" "+usertoken(3)
  128. err = A_DEPOSIT
  129. PRINTLN "@X0CDepositing @X0E"+err+"@X0E Min@X0C to Your Account"
  130. Log "Deposited: "+err+" Min",0
  131. PUTUSER U_NOTES(4)                  ; update bank
  132. ADJTIME -A_DEPOSIT                 ; update board time
  133. GOTO END_PROGRAM
  134.  
  135. :WITHDRAW
  136. IF (TIME_BALANCE = 0) THEN GOTO ERR_NO_BALANCE
  137.   ENDIF
  138. IF (TIME_AVAILABLE = 0 ) THEN GOTO ERR_W_NO_AVAIL
  139.   ENDIF
  140. IF ( TIME_BALANCE > MAX_WITHDRAW ) THEN A_WITHDRAW = MAX_WITHDRAW
  141.   ENDIF
  142. INPUTSTR "Enter the Amount to Withdraw :", A_WITHDRAW, 0Eh, 2, MASK_NUM(), FIELDLEN + GUIDE + UPCASE + LFBEFORE + ERASELINE
  143. IF (A_WITHDRAW > MAX_WITHDRAW) THEN GOTO ERR_W_TOO_MUCH
  144.   ENDIF
  145. IF (A_WITHDRAW > TIME_BALANCE) THEN GOTO ERR_W_NO_AVAIL
  146.   ENDIF
  147.  
  148. usertoken(3) = usertoken(3) - A_WITHDRAW
  149. U_NOTES(4) = usertoken(1)+" "+usertoken(2)+" "+usertoken(3)
  150. err=A_WITHDRAW
  151. PRINT "@X0CWithdrawing @X0E "+err+" Min@X0C from Your Account"
  152. Log "Withdrawed: "+err+" Min",0
  153. PUTUSER U_NOTES(4)                  ; update bank
  154. ADJTIME A_WITHDRAW
  155. GOTO END_PROGRAM
  156.  
  157. :ERR_MAX
  158. Log "Attempted to Deposit When the bank was at Maximum",0
  159. PRINTLN "@X0CYour Bank Balace is at its Maximum!@X07@BEEP@"
  160. GOTO END_PROGRAM
  161.  
  162.  
  163. :ERR_TOO_MUCH
  164. err=A_DEPOSIT
  165. Log "Attempted to Deposit too much: " + err,0
  166. PRINTLN "@X0CThe Maximum You Can Deposit is:@X0B"+err+"Min @X07@BEEP@"
  167. GOTO END_PROGRAM
  168.  
  169. :ERR_NOT_ENOUGH
  170. err=A_DEPOSIT
  171. Log "Attempted to Deposit more time than remaining: ", err,0
  172. err=MINLEFT()
  173. PRINTLN "@X0CThe Maximum You Can Deposit is:@X0B "+err+" Min @X07@BEEP@"
  174. GOTO END_PROGRAM
  175.  
  176. :ERR_W_NO_AVAIL
  177. :ERR_W_TOO_MUCH
  178. err = A_WITHDRAW
  179. Log "Attempted to Withdraw too much! :"+err ,0
  180. err = MAX_WITHDRAW
  181. PRINT "@X0CThe Maximum You Can Withdraw is @X0B"+err+" Min @X07@BEEP@"
  182. GOTO END_PROGRAM
  183.  
  184.  
  185. :ERR_NO_BALANCE
  186. Log "Attempted to Withdraw : No Time in the Bank!",0
  187. PRINT "@X0CYou Must deposit time in the Bank in order to Withdraw@X07@BEEP@"
  188. GOTO END_PROGRAM
  189.  
  190. :HELP
  191. IF (EXIST(PPEPATH() + "H_BANK")) DISPFILE PPEPATH() + "H_BANK", LANG + SEC + GRAPH
  192. GOTO BEGIN_MAIN
  193.  
  194. :END_PROGRAM
  195.